In-Process, State Server, এবং SQL Server Session Modes

Microsoft Technologies - এএসপি ডট নেট ওয়েব (ASP.Net WP) Session Management এবং কুকিজ (Session Management and Cookies) |
207
207

ASP.NET Web Forms এ session state ব্যবস্থাপনা একটি গুরুত্বপূর্ণ বিষয়, যা ব্যবহারকারীর তথ্য অস্থায়ীভাবে সংরক্ষণ করতে ব্যবহৃত হয়। এই session state বিভিন্ন mode তে কাজ করতে পারে, যেমন In-Process, State Server, এবং SQL Server। প্রতিটি mode এর নিজস্ব বৈশিষ্ট্য এবং উপকারিতা রয়েছে, যা নির্ভর করে অ্যাপ্লিকেশনের পারফরম্যান্স, স্কেলেবিলিটি এবং নিরাপত্তা চাহিদার উপর।

এই নিবন্ধে আমরা বিস্তারিতভাবে আলোচনা করব In-Process, State Server, এবং SQL Server Session Modes সম্পর্কে।


In-Process Session Mode

In-Process Session Mode হল ডিফল্ট session mode, যেখানে session state সরাসরি ওয়েব অ্যাপ্লিকেশনের worker process (w3wp.exe) এর মধ্যে সংরক্ষিত হয়। এতে session এর তথ্য RAM এ সংরক্ষিত থাকে, যা দ্রুত অ্যাক্সেস করা যায়।

বৈশিষ্ট্য:

  • দ্রুত পারফরম্যান্স: এই mode তে session data সরাসরি অ্যাপ্লিকেশনের মেমরিতে সংরক্ষিত হয়, তাই দ্রুত অ্যাক্সেস করা যায়।
  • সীমাবদ্ধতা: যদি ওয়েব অ্যাপ্লিকেশনটি মেমরি সীমা ছাড়িয়ে যায় বা অ্যাপ্লিকেশন রিসার্ভ হয়, তবে session data হারানো যেতে পারে।
  • একটি সার্ভারে সীমাবদ্ধ: শুধুমাত্র একই সার্ভারে থাকা ব্যবহারকারীদের session information শেয়ার করা যাবে না। অর্থাৎ, যদি অ্যাপ্লিকেশনটি একাধিক সার্ভারে হোস্ট করা হয় (Load Balanced Environment), তাহলে session স্টেট শেয়ার করা সম্ভব হবে না।

কনফিগারেশন:

Web.config ফাইলে In-Process session mode কনফিগার করতে এইভাবে লেখা হয়:

<configuration>
  <system.web>
    <sessionState mode="InProc" timeout="20" />
  </system.web>
</configuration>

এখানে mode="InProc" দিয়ে In-Process session mode সেট করা হয়েছে।


State Server Session Mode

State Server Session Mode তে session data একটি আলাদা সার্ভারে (স্টেট সার্ভার) সংরক্ষিত থাকে, যা অ্যাপ্লিকেশনের worker process থেকে পৃথক থাকে। এটি অ্যাপ্লিকেশন মেমরি থেকে session data আলাদা রাখে এবং একটি পৃথক সার্ভারে session state পরিচালনা করে।

বৈশিষ্ট্য:

  • স্কেলেবিলিটি: একাধিক ওয়েব সার্ভারের মধ্যে session data শেয়ার করা যায়, তাই এটি load balancing পরিবেশে ভালো কাজ করে।
  • ট্রেড-অফ পারফরম্যান্স: In-Process এর তুলনায় কিছুটা ধীর গতির হতে পারে, কারণ session data আলাদা সার্ভারে সংরক্ষিত থাকে এবং একে অ্যাক্সেস করার জন্য নেটওয়ার্ক কল প্রয়োজন হয়।
  • ডেটা স্থায়িত্ব: স্টেট সার্ভার চালু থাকলে session data নিরাপদ থাকে, কারণ এটি অ্যাপ্লিকেশন রিসার্ভ বা সার্ভার ক্র্যাশ হলেও session information হারানো যাবে না।

কনফিগারেশন:

Web.config ফাইলে State Server session mode কনফিগার করতে এইভাবে লেখা হয়:

<configuration>
  <system.web>
    <sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" timeout="20" />
  </system.web>
</configuration>

এখানে mode="StateServer" দিয়ে State Server session mode এবং stateConnectionString দিয়ে স্টেট সার্ভারের ঠিকানা নির্ধারণ করা হয়েছে।


SQL Server Session Mode

SQL Server Session Mode তে session data একটি SQL Server ডাটাবেসে সংরক্ষিত থাকে। এই mode টি স্টেট সার্ভারের তুলনায় আরও স্থিতিশীল এবং ডিস্ট্রিবিউটেড অ্যাপ্লিকেশনগুলোর জন্য উপযুক্ত, যেখানে একাধিক সার্ভার থেকে session data অ্যাক্সেস করার প্রয়োজন হয়।

বৈশিষ্ট্য:

  • ডিস্ট্রিবিউটেড অ্যাপ্লিকেশন: একাধিক সার্ভার থেকে session data অ্যাক্সেস করা যায়, যা load balancing এর জন্য আদর্শ।
  • স্থায়িত্ব: SQL Server ডাটাবেসে session data সংরক্ষণ হওয়ায় ডেটা স্থিতিশীল থাকে, এমনকি সার্ভার ক্র্যাশ বা রিস্টার্টের পরও session information বজায় থাকে।
  • পারফরম্যান্স: SQL Server এর সাথে যোগাযোগ করার কারণে কিছুটা ধীর হতে পারে, তবে সঠিক কনফিগারেশন এবং টিউনিংয়ের মাধ্যমে এর পারফরম্যান্স উন্নত করা সম্ভব।

কনফিগারেশন:

Web.config ফাইলে SQL Server session mode কনফিগার করতে এইভাবে লেখা হয়:

<configuration>
  <system.web>
    <sessionState mode="SQLServer" sqlConnectionString="data source=localhost;initial catalog=ASPState;user id=sa;password=yourpassword" timeout="20" />
  </system.web>
</configuration>

এখানে mode="SQLServer" দিয়ে SQL Server session mode এবং sqlConnectionString দিয়ে SQL Server ডাটাবেসের কানেকশন স্ট্রিং নির্ধারণ করা হয়েছে।


In-Process, State Server, এবং SQL Server Session Modes এর তুলনা

বৈশিষ্ট্যIn-ProcessState ServerSQL Server
পারফরম্যান্সদ্রুত, কারণ session data অ্যাপ্লিকেশন মেমরিতে থাকেকিছুটা ধীর, নেটওয়ার্ক কলের মাধ্যমে অ্যাক্সেস করতে হয়ধীর, কারণ SQL Server ডাটাবেসে ডেটা সংরক্ষিত থাকে
স্কেলেবিলিটিএকাধিক সার্ভারে session data শেয়ার করা সম্ভব নাএকাধিক সার্ভারে session data শেয়ার করা যায়একাধিক সার্ভারে session data শেয়ার করা যায়
ডেটা স্থায়িত্বঅ্যাপ্লিকেশন রিসার্ভ বা সার্ভার ক্র্যাশ হলে session data হারিয়ে যেতে পারেসার্ভার রিস্টার্টেও session data বজায় থাকেSQL Server ডাটাবেসে session data স্থায়ী থাকে
উপযুক্ত পরিবেশছোট অ্যাপ্লিকেশন বা একক সার্ভার সিস্টেমLoad balanced অ্যাপ্লিকেশন এবং মিডিয়াম স্কেলডিস্ট্রিবিউটেড অ্যাপ্লিকেশন এবং বড় স্কেল

উপসংহার

In-Process, State Server, এবং SQL Server session modes তে প্রতিটি mode এর নিজস্ব সুবিধা এবং সীমাবদ্ধতা রয়েছে। যদি অ্যাপ্লিকেশনটি একক সার্ভারে চলে এবং খুব বেশি স্কেল করতে না হয়, তবে In-Process mode সবচেয়ে ভালো। তবে, যদি অ্যাপ্লিকেশনটি load balanced পরিবেশে চলে, যেখানে একাধিক সার্ভারে session data শেয়ার করার প্রয়োজন হয়, তাহলে State Server অথবা SQL Server session modes ব্যবহার করা উচিত। SQL Server mode বড় স্কেল বা ডিস্ট্রিবিউটেড অ্যাপ্লিকেশনগুলোর জন্য সবচেয়ে উপযুক্ত, যেখানে session data সুরক্ষিত এবং স্থায়ী থাকতে হবে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion